﻿#region License
/* Copyright (C) 2009 Tim Coulter
 * 
 * This file is part of ExtremeML.
 * 
 * ExtremeML is free software: you can redistribute
 * it and/or modify it under the terms of the GNU General Public
 * License, as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 * 
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty
 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
 * the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see http://www.gnu.org/licenses/.
*/
#endregion

using System.Drawing;
using ExtremeML.Spreadsheet.Address;

namespace ExtremeML.Sdk.Vml
{
	/// <summary>
	/// Defines the rendering properties of a Vml comment shape.
	/// </summary>
	public class ShapeProperties
	{
		/// <summary>
		/// Initializes a new instance of the <see cref="ShapeProperties"/> class.
		/// </summary>
		public ShapeProperties(
			GridReference? cell,
			Point? origin,
			Size? size)
		{
			Cell = cell;
			Origin = origin;
			Size = size;
		}

		/// <summary>
		/// Initializes a new instance of the <see cref="ShapeProperties"/> class.
		/// </summary>
		public ShapeProperties(
			Size? size)
		{
			Size = size;
		}

		/// <summary>
		/// Gets the cell targeted by the associated comment.
		/// </summary>
		public GridReference? Cell { get; private set; }

		/// <summary>
		/// Gets the relative origin (in pixels) of the associated
		/// shape (relative to the top right corner of the target cell).
		/// </summary>
		public Point? Origin { get; private set; }

		/// <summary>
		/// Gets the size (in pixels) of the associated shape.
		/// </summary>
		public Size? Size { get; private set; }
	
		/// <summary>
		/// Returns an instance configured with the default values.
		/// </summary>
		/// <returns>A new <see cref="ShapeProperties"/> instance.</returns>
		public static ShapeProperties GetDefault()
		{
			return new ShapeProperties(
				null,
				new Point(15, 2),
				new Size(143, 78));
		}
	}
}